home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / optivc32 / vulmath.h < prev    next >
C/C++ Source or Header  |  1999-03-06  |  5KB  |  106 lines

  1. /*  VULmath.h
  2.  
  3.   vector management functions for data type "unsigned long":
  4.   integer arithmetics and mathematics.
  5.  
  6.   Copyright (c) 1996-1999 by Martin Sander
  7.   All Rights Reserved.
  8. */
  9.  
  10. #ifndef __VULMATH_H
  11. #define __VULMATH_H
  12.  
  13. #if !defined( __VECLIB_H )
  14.    #include <VecLib.h>
  15. #endif
  16.  
  17. #ifdef __cplusplus
  18.    extern "C" {
  19. #endif
  20.  
  21. /******************   Basic  Arithmetics   *************************/
  22.  
  23. void  __vf  VULo_addC(  ulVector Y, ulVector X, ui size, unsigned long C );
  24. void  __vf  VULo_subC(  ulVector Y, ulVector X, ui size, unsigned long C );
  25. void  __vf  VULo_subrC( ulVector Y, ulVector X, ui size, unsigned long C );
  26. void  __vf  VULo_mulC(  ulVector Y, ulVector X, ui size, unsigned long C );
  27. #ifdef V_trapIntError
  28.     #define VUL_addC    VULo_addC
  29.     #define VUL_subC    VULo_subC
  30.     #define VUL_subrC   VULo_subrC
  31.     #define VUL_mulC    VULo_mulC
  32. #else
  33.     void  __vf  VUL_addC(  ulVector Y, ulVector X, ui size, unsigned long C );
  34.     void  __vf  VUL_subC(  ulVector Y, ulVector X, ui size, unsigned long C );
  35.     void  __vf  VUL_subrC( ulVector Y, ulVector X, ui size, unsigned long C );
  36.     void  __vf  VUL_mulC(  ulVector Y, ulVector X, ui size, unsigned long C );
  37. #endif
  38.  
  39. void  __vf  VUL_divC(  ulVector Y, ulVector X, ui size, unsigned long C );
  40. void  __vf  VUL_divrC( ulVector Y, ulVector X, ui size, unsigned long C );
  41. void  __vf  VUL_modC(  ulVector Y, ulVector X, ui size, unsigned long C );
  42. void  __vf  VUL_maxC(  ulVector Y, ulVector X, ui size, unsigned long C );
  43. void  __vf  VUL_minC(  ulVector Y, ulVector X, ui size, unsigned long C );
  44.  
  45. void  __vf  VULo_addV(  ulVector Z, ulVector X, ulVector Y, ui size );
  46. void  __vf  VULo_subV(  ulVector Z, ulVector X, ulVector Y, ui size );
  47. void  __vf  VULo_subrV( ulVector Z, ulVector X, ulVector Y, ui size );
  48. void  __vf  VULo_mulV(  ulVector Z, ulVector X, ulVector Y, ui size );
  49. #ifdef V_trapIntError
  50.     #define VUL_addV    VULo_addV
  51.     #define VUL_subV    VULo_subV
  52.     #define VUL_subrV   VULo_subrV
  53.     #define VUL_mulV    VULo_mulV
  54. #else
  55.     void __vf  VUL_addV(  ulVector Z, ulVector X, ulVector Y, ui size );
  56.     void __vf  VUL_subV(  ulVector Z, ulVector X, ulVector Y, ui size );
  57.     void __vf  VUL_subrV( ulVector Z, ulVector X, ulVector Y, ui size );
  58.     void __vf  VUL_mulV(  ulVector Z, ulVector X, ulVector Y, ui size );
  59. #endif
  60. void    __vf  VUL_divV(  ulVector Z, ulVector X, ulVector Y, ui size );
  61. void    __vf  VUL_divrV( ulVector Z, ulVector X, ulVector Y, ui size );
  62. void    __vf  VUL_modV(  ulVector Z, ulVector X, ulVector Y, ui size );
  63. void    __vf  VUL_maxV(  ulVector Z, ulVector X, ulVector Y, ui size );
  64. void    __vf  VUL_minV(  ulVector Z, ulVector X, ulVector Y, ui size );
  65.  
  66. /******************** Accumulation (Y += X) ******************************/
  67.  
  68. void __vf VUL_accV(   ulVector Y, ulVector  X, ui size );
  69. void __vf VUL_accVBI( ulVector Y, ubVector  X, ui size );
  70. void __vf VUL_accVSI( ulVector Y, usVector  X, ui size );
  71. void __vf VUL_accVI(  ulVector Y, uVector   X, ui size );
  72.  
  73. /*****************   Bit-wise operations  *********************/
  74.  
  75. void    __vf  VUL_shl( ulVector Y, ulVector X, ui size, unsigned C );
  76. void    __vf  VUL_shr( ulVector Y, ulVector X, ui size, unsigned C );
  77.  
  78. void    __vf  VUL_and( ulVector Y, ulVector X, ui size, unsigned long C );
  79. void    __vf  VUL_or(  ulVector Y, ulVector X, ui size, unsigned long C );
  80. void    __vf  VUL_xor( ulVector Y, ulVector X, ui size, unsigned long C );
  81. void    __vf  VUL_not( ulVector Y, ulVector X, ui size );
  82.  
  83. /************  Optical Density Y = log10( X0 / X ) *********************/
  84.  
  85. int  __vf VUL_ODtoF( fVector OD, uVector X, uVector X0, ui size );
  86. int  __vf VUL_ODtoD( dVector OD, uVector X, uVector X0, ui size );
  87. int  __vf VUL_ODtoFwDark( fVector OD, uVector X, uVector XDark,
  88.                           uVector X0, uVector X0Dark, ui size );
  89. int  __vf VUL_ODtoDwDark( dVector OD, uVector X, uVector XDark,
  90.                           uVector X0, uVector X0Dark, ui size );
  91. void __vf VUL_setODThresh( unsigned long minX, unsigned long minX0 );
  92. #ifdef __BORLANDC__   /* 80-bit reals supported ? */
  93. int  __vf VUL_ODtoE( eVector OD, uVector X, uVector X0, ui size );
  94. int  __vf VUL_ODtoEwDark( eVector OD, uVector X, uVector XDark,
  95.                           uVector X0, uVector X0Dark, ui size );
  96. #else
  97.     #define VUL_ODtoE      VUL_ODtoD
  98.     #define VUL_ODtoEwDark VUL_ODtoDwDark
  99. #endif
  100.  
  101. #ifdef __cplusplus
  102. }
  103. #endif
  104.  
  105. #endif   /*  __VULMATH_H    */
  106.